/**
 * form混合
 * */
import { mapState } from 'vuex';
export default {
    data () {
        return {
            formName: 'form', // 筛选表单名称啥
            grid: {
                xl: 8,
                lg: 8,
                md: 12,
                sm: 24,
                xs: 24
            },
            collapse: false, // 是否展开更多筛选条件
            formData: {}, // 表单提交数据
            copyFormData: {} // copy form data 此处必须写
        }
    },
    computed: {
        ...mapState('admin/layout', ['isMobile']),
        labelWidth () {
            return this.isMobile ? undefined : 100;
        },
        labelPosition () {
            return this.isMobile ? 'top' : 'right';
        }
    },
    created () {
        // copy 一份数据 方便清空表单数据
        let copyFormData = JSON.parse(JSON.stringify(this.rawFormData));
        // 传给子组件的数据
        this.copyFormData = copyFormData;
        // 动态添加formData 提交数据内容
        Object.keys(copyFormData).forEach((key) => {
            const obj = copyFormData[key];
            let name = '';
            let val = '';
            if (obj.type === 'inputRange') {
                obj.valueArr.forEach(item => {
                    name = item.name;
                    val = item.value;
                    this.$set(this.formData, name, val)
                })
            } else {
                name = obj.name;
                val = obj.value;
                this.$set(this.formData, name, val)
            }
        })
    },
    methods: {
        // 表格列表筛选件提交
        handleSubmit (name) {
            this.$refs[name].validate((valid) => {
                if (valid) {
                    this.$Message.loading({
                        content: '正在获取数据!',
                        duration: 1
                    });
                } else {
                    this.$Message.error('部分筛选条件选择错误，请重新选择！');
                    return false;
                }

                this.getData(); // 获取列表数据
            })
        },
        // 表格列表筛选件清空
        handleReset (name) {
            let copyFormData = JSON.parse(JSON.stringify(this.rawFormData));
            this.$set(this, 'copyFormData', copyFormData);
            this.getData(); // 获取列表数据
            // this.$refs[name].resetFields();
        },
        // 组件内数据改变
        handleChangeFormData (data) {
            this.$set(this.formData, data.name, data.value);
        },
        // 展开搜索切换
        collapseChange (data) {
            this.collapse = data;
        }
    }
}
